home *** CD-ROM | disk | FTP | other *** search
/ EnigmA Amiga Run 1995 October / EnigmA AMIGA RUN 01 (1995)(G.R. Edizioni)(IT)[!][issue 1995-10][Aminet 7].iso / Aminet / misc / emu / ST4Amiga.lha / ST / ST.s < prev   
Text File  |  1995-04-24  |  2KB  |  98 lines

  1. ; © Stefan Haubenthal 1992-95
  2. *    opt    o+
  3. *    include    prog:asm/include/wb.i
  4. *    incdir    prog:asm/include
  5. *    include    easystart.i
  6.  
  7. version=    "2.04"
  8. allocabs=    -$0cc
  9. freemem=    -$0d2
  10. oldopenlibrary=    -$198
  11. closelibrary=    -$19e
  12. open=        -$01e
  13. read=        -$02a
  14. copymemquick=    -$276
  15. mode_oldfile=    1005
  16.  
  17. scr=        $30000
  18. rom=        $40000
  19. romsize=    $30000
  20. emu=        $70000
  21.  
  22.     move.l    4.w,a6
  23.     move.l    #romsize,d0
  24.     lea    rom,a1
  25.     jsr    allocabs(a6)
  26.     tst.l    d0
  27.     beq    exit
  28.     move.l    #emusize,d0
  29.     lea    emu,a1
  30.     jsr    allocabs(a6)
  31.     tst.l    d0
  32.     beq    exit
  33.     lea    dosname(pc),a1
  34.     jsr    oldopenlibrary(a6)
  35.     move.l    d0,a6
  36.     move.l    #romname,d1
  37.     move.l    #mode_oldfile,d2
  38.     jsr    open(a6)
  39.     beq.s    exit2
  40.     move.l    d0,d1
  41.     move.l    #rom,d2
  42.     move.l    #romsize,d3
  43.     jsr    read(a6)
  44.     bsr.s    patch
  45.     move.l    4.w,a6
  46.     lea    start_emu,a0
  47.     lea    emu,a1
  48.     move.l    #emusize,d0
  49.     jsr    copymemquick(a6)
  50.     jmp    emu+4
  51. ; goodbye AmigaDOS!
  52. exit2    move.l    a6,a1
  53.     move.l    4.w,a6
  54.     jsr    closelibrary(a6)
  55.     move.l    #emusize,d0
  56.     lea    emu,a1
  57.     jsr    freemem(a6)
  58. exit    moveq    #20,d0
  59.     rts
  60.  
  61. patch    lea    reloc,a0
  62.     sub.l    a1,a1
  63. next_reloc    moveq    #0,d0
  64.     cmp    #0,(a0)
  65.     add    (a0)+,a1
  66.     bne.s    not_packed
  67.     move.b    (a0)+,d0
  68.     move.b    (a0)+,d1
  69. next_packed    add    d1,a1
  70. not_packed    sub.b    #($fc0000-rom)>>16,(a1,d2.l)
  71.     dbra    d0,next_packed
  72.     cmp.l    #diff,a0
  73.     blo.s    next_reloc
  74. next_diff    move.l    (a0)+,a1
  75.     move    (a0)+,d0
  76.     move.b    d0,(a1,d2.l)
  77.     cmp.l    #end_diff,a0
  78.     blo.s    next_diff
  79.     rts
  80.  
  81.     dc.b    "$VER: ST4Amiga V"
  82.     dc.l    version
  83.     dc.b    0
  84. dosname    dc.b    "dos.library",0
  85. romname    dc.b    "TOS.IMG",0
  86.  
  87.     data
  88. ; { delta_offset.w
  89. ; | 0.w number-1.b delta_offset.b }
  90. reloc    include    reloc.asm
  91. ; { offset.l data.w }
  92. diff    include    diff.asm
  93. end_diff
  94.  
  95.     code
  96. start_emu    include    emu.asm
  97. emusize=    *-emu
  98.